#ifndef QUEUE_H_
#define QUEUE_H_

struct node_t {
	void *data;
	struct node_t *next;
};

struct Queue {
	struct node_t *queueHead;
	struct node_t *queueTail;
	void (*enqueue) (void *, struct Queue*);
	void* (*dequeue) (struct Queue*);
	void* (*peek) (struct Queue*);
	void (*free_queue) (struct Queue*);
};

void initQueue(struct Queue*);
void fEnqueue (void*, struct Queue*);
void* fDequeue (struct Queue*);
void* fPeek (struct Queue*);
void fFreeQueue (struct Queue*);


#endif /* QUEUE_H_ */
